package 快速排序;

import java.util.Arrays;

public class QuickSort {
    public static void main(String[] args) {
        int[] arr = {6, 2, 5, 77, 3, 14, 82, 2, 4};
        quickSort(arr,0,arr.length-1);
        System.out.println(Arrays.toString(arr));
    }

    public static void quickSort(int[] arr, int start, int end) {
        if (start<end){
            //找出标准数 数组中的第0个
            int stard = arr[start];
            //纪录需要排序的下标
            int low = start;
            int hight = end;
            //循环找比标准数大的数和比标准数小的数
            while (low < hight) {
                //右边数比标准数大
                while (low < hight && stard <= arr[hight]) {
                    hight--;
                }
                //使用右边的数字替换左边的数字
                arr[low] = arr[hight];
                //左边数比标准数小
                while (low < hight && stard >= arr[low]) {
                    low++;
                }
                //使用左边的数字替换右边的数字
                arr[hight] = arr[low];
            }
            //把标准数赋值给low/hight位置
            arr[low] = stard;

            //处理所有小的数字
            quickSort(arr,start,low);
            //处理所有大的数字
            quickSort(arr,low+1,end);
        }
    }
}
